package com.indusfo.spc.mapper;

import com.indusfo.spc.pda.pojo.OrderDosing;
import com.indusfo.spc.pojo.Batch;
import com.indusfo.spc.pojo.Order;
import com.indusfo.spc.pojo.OrderFlow;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface BatchMapper {

    // 查询
    List<Batch> selectBatch(Batch batch);

    // 计数
    int countBatch(Batch batch);

    // 批量删除
    int delBatch(@Param("batchIds") Long[] batchIds);

    // 打印
    int printBatch(@Param("batchIds") Long[] batchIds);

    // 查询 批次 投产数量
    Batch selectBatchNum(Batch batch);

    // 模糊查询任务单
    Order queryOrder(Order order);

    int insertSelective(@Param("batch") Batch batch, @Param("list") List<String> list);

    // 查询条码规则
    Integer queryRuleId(@Param("orderId") Integer orderId);

    /**
     * 根据ID查询code编号
     */
    String selectById(@Param("batchId") Integer batchId);

    // 根据批次号 查询
    Batch queryBatchOrder(Batch batch);

    // 根据任务单ID查询工艺版本
    Integer selectOrderTechIdByOrderId(Integer orderId);

    Integer queryNowFlowId(Integer orderTechId);

	List<Batch> queryBatchList(Integer orderId);


    List<OrderDosing> queryOrderDosing(Integer orderId);

    List<OrderDosing> queryOrderDosingForBatch(Integer orderId);

    int deleteOrderDosing(@Param("deleteList") List<Integer> deleteList, @Param("orderId")  Integer orderId);



    /**
     * 新增
     */
    int insertOrderDosing(OrderDosing orderDosing);

    /**
     * 修改
     */
    int updateOrderDosing(OrderDosing orderDosing);

    int updateBatch(Batch batch);

    /**
     * 查询所有批次
     * @param batch
     * @return
     */
    List<Batch> queryBatchAll(Batch batch);

    /**
     * 查询所有批次总数
     * @param batch
     * @return
     */
    int countBatchAll(Batch batch);

    /**
     * 级联删除产品报废中使用的批次
     * @param batchIds
     * @return
     */
    int delBatchScrap(@Param("batchIds") Long[] batchIds);

    // 查询创建批次数量(除去报废的)
    Integer querybatchNum(@Param("orderId") Integer orderId);

    int printBatchCode(@Param("batchCodes")String[] batchCodes);
}